package com.spider.silence.main;

import com.spider.silence.downloader.Njd1Downloader;
import com.spider.silence.pool.Njd1DownloaderPool;
import com.spider.silence.utils.PropertiesUtil;
import com.spider.silence.worker.Njd1ModuleWorker;
import com.spider.silence.worker.Njd1Worker;
import org.apache.log4j.PropertyConfigurator;

import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * Created by qiuhao on 2017/5/11.
 */
public class Njd1Main {

    public static void main(String[] args) throws Exception {
        PropertyConfigurator.configure(PropertiesUtil.getLogPro());//初始化日志环境
        //获取下载器池单例
        Njd1DownloaderPool downLoaderPool = Njd1DownloaderPool.getInstance();
        //从下载器池中获取下载器
        Njd1Downloader downLoader = (Njd1Downloader) downLoaderPool.fetchDownLoader(1000);

        List<String> listUrl = downLoader.getUrl();//获取模块的url
        //创建任务和把任务放到任务管理中心
        downLoader.generateTask(listUrl);
        //初始化任务完后把下载器放回下载器中
        downLoaderPool.releaseDownLoader(downLoader);
        //创建线程池
        ExecutorService pool = Executors.newFixedThreadPool(3000);
        //创建多个工作者线程从下载器单例池中取下载器处理从任务中心取得的任务 用完后把下载器放回到下载器池中

        for (int i = 0; i < Integer.valueOf(PropertiesUtil.getVal("MaLa.WorkerCount")); i++) {
            pool.execute(new Njd1ModuleWorker());
            pool.execute(new Njd1Worker());
        }
    }

    }
